GtkImageMenuItem: move public members to private structure
authorJavier Jardón <jjardon@gnome.org>
Wed, 23 Jun 2010 22:53:00 +0000 (00:53 +0200)
committerJavier Jardón <jjardon@gnome.org>
Tue, 13 Jul 2010 17:40:48 +0000 (19:40 +0200)
gtk/gtkimcontextsimple.c
gtk/gtkimcontextsimple.h

index f45efcc76fc5331b31f10956766821f36fd5ebb9..7a17340883b5212bd2277b0c8b0d1abe1eefbb63 100644 (file)
 typedef struct _GtkComposeTable GtkComposeTable;
 typedef struct _GtkComposeTableCompact GtkComposeTableCompact;
 
+struct _GtkIMContextSimplePriv
+{
+  GSList        *tables;
+
+  guint          compose_buffer[GTK_MAX_COMPOSE_LEN + 1];
+  gunichar       tentative_match;
+  gint           tentative_match_len;
+
+  guint          in_hex_sequence : 1;
+  guint          modifiers_dropped : 1;
+};
+
 struct _GtkComposeTable 
 {
   const guint16 *data;
@@ -106,24 +118,30 @@ gtk_im_context_simple_class_init (GtkIMContextSimpleClass *class)
   im_context_class->reset = gtk_im_context_simple_reset;
   im_context_class->get_preedit_string = gtk_im_context_simple_get_preedit_string;
   gobject_class->finalize = gtk_im_context_simple_finalize;
+
+  g_type_class_add_private (class, sizeof (GtkIMContextSimplePriv));
 }
 
 static void
 gtk_im_context_simple_init (GtkIMContextSimple *im_context_simple)
-{  
+{
+  im_context_simple->priv = G_TYPE_INSTANCE_GET_PRIVATE (im_context_simple,
+                                                         GTK_TYPE_IM_CONTEXT_SIMPLE,
+                                                         GtkIMContextSimplePriv);
 }
 
 static void
 gtk_im_context_simple_finalize (GObject *obj)
 {
   GtkIMContextSimple *context_simple = GTK_IM_CONTEXT_SIMPLE (obj);
+  GtkIMContextSimplePriv *priv = context_simple->priv;
 
-  if (context_simple->tables)
+  if (priv->tables)
     {
-      g_slist_foreach (context_simple->tables, (GFunc)g_free, NULL);
-      g_slist_free (context_simple->tables);
+      g_slist_foreach (priv->tables, (GFunc)g_free, NULL);
+      g_slist_free (priv->tables);
 
-      context_simple->tables = NULL;
+      priv->tables = NULL;
     }
 
   G_OBJECT_CLASS (gtk_im_context_simple_parent_class)->finalize (obj);
@@ -146,21 +164,21 @@ static void
 gtk_im_context_simple_commit_char (GtkIMContext *context,
                                   gunichar ch)
 {
+  GtkIMContextSimple *context_simple = GTK_IM_CONTEXT_SIMPLE (context);
+  GtkIMContextSimplePriv *priv = context_simple->priv;
   gchar buf[10];
   gint len;
 
-  GtkIMContextSimple *context_simple = GTK_IM_CONTEXT_SIMPLE (context);
-
   g_return_if_fail (g_unichar_validate (ch));
-  
+
   len = g_unichar_to_utf8 (ch, buf);
   buf[len] = '\0';
 
-  if (context_simple->tentative_match || context_simple->in_hex_sequence)
+  if (priv->tentative_match || priv->in_hex_sequence)
     {
-      context_simple->in_hex_sequence = FALSE;  
-      context_simple->tentative_match = 0;
-      context_simple->tentative_match_len = 0;
+      priv->in_hex_sequence = FALSE;
+      priv->tentative_match = 0;
+      priv->tentative_match_len = 0;
       g_signal_emit_by_name (context_simple, "preedit-changed");
       g_signal_emit_by_name (context_simple, "preedit-end");
     }
@@ -207,6 +225,7 @@ check_table (GtkIMContextSimple    *context_simple,
             const GtkComposeTable *table,
             gint                   n_compose)
 {
+  GtkIMContextSimplePriv *priv = context_simple->priv;
   gint row_stride = table->max_seq_len + 2; 
   guint16 *seq; 
   
@@ -216,7 +235,7 @@ check_table (GtkIMContextSimple    *context_simple,
   if (n_compose > table->max_seq_len)
     return FALSE;
   
-  seq = bsearch (context_simple->compose_buffer,
+  seq = bsearch (priv->compose_buffer,
                 table->data, table->n_seqs,
                 sizeof (guint16) *  row_stride, 
                 compare_seq);
@@ -231,7 +250,7 @@ check_table (GtkIMContextSimple    *context_simple,
       while (seq > table->data)
        {
          prev_seq = seq - row_stride;
-         if (compare_seq (context_simple->compose_buffer, prev_seq) != 0)
+         if (compare_seq (priv->compose_buffer, prev_seq) != 0)
            break;
          seq = prev_seq;
        }
@@ -250,10 +269,10 @@ check_table (GtkIMContextSimple    *context_simple,
          next_seq = seq + row_stride;
          if (next_seq < table->data + row_stride * table->n_seqs)
            {
-             if (compare_seq (context_simple->compose_buffer, next_seq) == 0)
+             if (compare_seq (priv->compose_buffer, next_seq) == 0)
                {
-                 context_simple->tentative_match = value;
-                 context_simple->tentative_match_len = n_compose;
+                 priv->tentative_match = value;
+                 priv->tentative_match_len = n_compose;
                
                  g_signal_emit_by_name (context_simple, "preedit-changed");
 
@@ -262,7 +281,7 @@ check_table (GtkIMContextSimple    *context_simple,
            }
 
          gtk_im_context_simple_commit_char (GTK_IM_CONTEXT (context_simple), value);
-         context_simple->compose_buffer[0] = 0;
+         priv->compose_buffer[0] = 0;
        }
       
       return TRUE;
@@ -294,12 +313,13 @@ static gboolean
 check_win32_special_cases (GtkIMContextSimple    *context_simple,
                           gint                   n_compose)
 {
+  GtkIMContextSimplePriv *priv = context_simple->priv;
   if (n_compose == 2 &&
-      context_simple->compose_buffer[1] == GDK_space)
+      priv->compose_buffer[1] == GDK_space)
     {
       gunichar value = 0;
 
-      switch (context_simple->compose_buffer[0])
+      switch (priv->compose_buffer[0])
        {
        case GDK_dead_acute:
          value = 0x00B4; break;
@@ -309,7 +329,7 @@ check_win32_special_cases (GtkIMContextSimple    *context_simple,
       if (value > 0)
        {
          gtk_im_context_simple_commit_char (GTK_IM_CONTEXT (context_simple), value);
-         context_simple->compose_buffer[0] = 0;
+         priv->compose_buffer[0] = 0;
 
          GTK_NOTE (MISC, g_print ("win32: U+%04X\n", value));
          return TRUE;
@@ -323,12 +343,14 @@ check_win32_special_case_after_compact_match (GtkIMContextSimple    *context_sim
                                              gint                   n_compose,
                                              guint                  value)
 {
+  GtkIMContextSimplePriv *priv = context_simple->priv;
+
   /* On Windows user expectation is that typing two dead accents will input
    * two corresponding spacing accents.
    */
   if (n_compose == 2 &&
-      context_simple->compose_buffer[0] == context_simple->compose_buffer[1] &&
-      IS_DEAD_KEY (context_simple->compose_buffer[0]))
+      priv->compose_buffer[0] == priv->compose_buffer[1] &&
+      IS_DEAD_KEY (priv->compose_buffer[0]))
     {
       gtk_im_context_simple_commit_char (GTK_IM_CONTEXT (context_simple), value);
       GTK_NOTE (MISC, g_print ("win32: U+%04X ", value));
@@ -342,6 +364,7 @@ check_compact_table (GtkIMContextSimple    *context_simple,
             const GtkComposeTableCompact *table,
             gint                   n_compose)
 {
+  GtkIMContextSimplePriv *priv = context_simple->priv;
   gint row_stride;
   guint16 *seq_index;
   guint16 *seq; 
@@ -352,8 +375,8 @@ check_compact_table (GtkIMContextSimple    *context_simple,
    * will overrun val if key is longer than val. */
   if (n_compose > table->max_seq_len)
     return FALSE;
-  
-  seq_index = bsearch (context_simple->compose_buffer,
+
+  seq_index = bsearch (priv->compose_buffer,
                 table->data, table->n_index_size,
                 sizeof (guint16) *  table->n_index_stride, 
                 compare_seq_index);
@@ -379,7 +402,7 @@ check_compact_table (GtkIMContextSimple    *context_simple,
 
       if (seq_index[i+1] - seq_index[i] > 0)
         {
-         seq = bsearch (context_simple->compose_buffer + 1,
+         seq = bsearch (priv->compose_buffer + 1,
                 table->data + seq_index[i], (seq_index[i+1] - seq_index[i]) / row_stride,
                 sizeof (guint16) *  row_stride, 
                 compare_seq);
@@ -414,7 +437,7 @@ check_compact_table (GtkIMContextSimple    *context_simple,
 #ifdef G_OS_WIN32
       check_win32_special_case_after_compact_match (context_simple, n_compose, value);
 #endif
-      context_simple->compose_buffer[0] = 0;
+      priv->compose_buffer[0] = 0;
 
       GTK_NOTE (MISC, g_print ("U+%04X\n", value));
       return TRUE;
@@ -496,6 +519,7 @@ check_algorithmically (GtkIMContextSimple    *context_simple,
                       gint                   n_compose)
 
 {
+  GtkIMContextSimplePriv *priv = context_simple->priv;
   gint i;
   gunichar combination_buffer[GTK_MAX_COMPOSE_LEN];
   gchar *combination_utf8, *nfc;
@@ -503,19 +527,19 @@ check_algorithmically (GtkIMContextSimple    *context_simple,
   if (n_compose >= GTK_MAX_COMPOSE_LEN)
     return FALSE;
 
-  for (i = 0; i < n_compose && IS_DEAD_KEY (context_simple->compose_buffer[i]); i++)
+  for (i = 0; i < n_compose && IS_DEAD_KEY (priv->compose_buffer[i]); i++)
     ;
   if (i == n_compose)
     return TRUE;
 
   if (i > 0 && i == n_compose - 1)
     {
-      combination_buffer[0] = gdk_keyval_to_unicode (context_simple->compose_buffer[i]);
+      combination_buffer[0] = gdk_keyval_to_unicode (priv->compose_buffer[i]);
       combination_buffer[n_compose] = 0;
       i--;
       while (i >= 0)
        {
-         switch (context_simple->compose_buffer[i])
+         switch (priv->compose_buffer[i])
            {
 #define CASE(keysym, unicode) \
            case GDK_dead_##keysym: combination_buffer[i+1] = unicode; break
@@ -552,7 +576,7 @@ check_algorithmically (GtkIMContextSimple    *context_simple,
            /* CASE (psili, 0x343); */
 #undef CASE
            default:
-             combination_buffer[i+1] = gdk_keyval_to_unicode (context_simple->compose_buffer[i]);
+             combination_buffer[i+1] = gdk_keyval_to_unicode (priv->compose_buffer[i]);
            }
          i--;
        }
@@ -569,7 +593,7 @@ check_algorithmically (GtkIMContextSimple    *context_simple,
 
           value = g_utf8_get_char (nfc);
           gtk_im_context_simple_commit_char (GTK_IM_CONTEXT (context_simple), value);
-          context_simple->compose_buffer[0] = 0;
+          priv->compose_buffer[0] = 0;
 
           g_free (combination_utf8);
           g_free (nfc);
@@ -602,6 +626,7 @@ static gboolean
 check_hex (GtkIMContextSimple *context_simple,
            gint                n_compose)
 {
+  GtkIMContextSimplePriv *priv = context_simple->priv;
   /* See if this is a hex sequence, return TRUE if so */
   gint i;
   GString *str;
@@ -609,8 +634,8 @@ check_hex (GtkIMContextSimple *context_simple,
   gchar *nptr = NULL;
   gchar buf[7];
 
-  context_simple->tentative_match = 0;
-  context_simple->tentative_match_len = 0;
+  priv->tentative_match = 0;
+  priv->tentative_match_len = 0;
 
   str = g_string_new (NULL);
   
@@ -619,7 +644,7 @@ check_hex (GtkIMContextSimple *context_simple,
     {
       gunichar ch;
       
-      ch = gdk_keyval_to_unicode (context_simple->compose_buffer[i]);
+      ch = gdk_keyval_to_unicode (priv->compose_buffer[i]);
       
       if (ch == 0)
         return FALSE;
@@ -649,8 +674,8 @@ check_hex (GtkIMContextSimple *context_simple,
 
   if (g_unichar_validate (n))
     {
-      context_simple->tentative_match = n;
-      context_simple->tentative_match_len = n_compose;
+      priv->tentative_match = n;
+      priv->tentative_match_len = n_compose;
     }
   
   return TRUE;
@@ -686,6 +711,7 @@ no_sequence_matches (GtkIMContextSimple *context_simple,
                      gint                n_compose,
                      GdkEventKey        *event)
 {
+  GtkIMContextSimplePriv *priv = context_simple->priv;
   GtkIMContext *context;
   gunichar ch;
   
@@ -694,18 +720,18 @@ no_sequence_matches (GtkIMContextSimple *context_simple,
   /* No compose sequences found, check first if we have a partial
    * match pending.
    */
-  if (context_simple->tentative_match)
+  if (priv->tentative_match)
     {
-      gint len = context_simple->tentative_match_len;
+      gint len = priv->tentative_match_len;
       int i;
       
-      gtk_im_context_simple_commit_char (context, context_simple->tentative_match);
-      context_simple->compose_buffer[0] = 0;
+      gtk_im_context_simple_commit_char (context, priv->tentative_match);
+      priv->compose_buffer[0] = 0;
       
       for (i=0; i < n_compose - len - 1; i++)
        {
          GdkEvent *tmp_event = gdk_event_copy ((GdkEvent *)event);
-         tmp_event->key.keyval = context_simple->compose_buffer[len + i];
+         tmp_event->key.keyval = priv->compose_buffer[len + i];
          
          gtk_im_context_filter_keypress (context, (GdkEventKey *)tmp_event);
          gdk_event_free (tmp_event);
@@ -715,7 +741,7 @@ no_sequence_matches (GtkIMContextSimple *context_simple,
     }
   else
     {
-      context_simple->compose_buffer[0] = 0;
+      priv->compose_buffer[0] = 0;
       if (n_compose > 1)               /* Invalid sequence */
        {
          beep_window (event->window);
@@ -790,6 +816,7 @@ gtk_im_context_simple_filter_keypress (GtkIMContext *context,
                                       GdkEventKey  *event)
 {
   GtkIMContextSimple *context_simple = GTK_IM_CONTEXT_SIMPLE (context);
+  GtkIMContextSimplePriv *priv = context_simple->priv;
   GSList *tmp_list;  
   int n_compose = 0;
   gboolean have_hex_mods;
@@ -800,34 +827,34 @@ gtk_im_context_simple_filter_keypress (GtkIMContext *context,
   guint hex_keyval;
   int i;
 
-  while (context_simple->compose_buffer[n_compose] != 0)
+  while (priv->compose_buffer[n_compose] != 0)
     n_compose++;
 
   if (event->type == GDK_KEY_RELEASE)
     {
-      if (context_simple->in_hex_sequence &&
+      if (priv->in_hex_sequence &&
          (event->keyval == GDK_Control_L || event->keyval == GDK_Control_R ||
           event->keyval == GDK_Shift_L || event->keyval == GDK_Shift_R))
        {
-         if (context_simple->tentative_match &&
-             g_unichar_validate (context_simple->tentative_match))
+         if (priv->tentative_match &&
+             g_unichar_validate (priv->tentative_match))
            {
-             gtk_im_context_simple_commit_char (context, context_simple->tentative_match);
-             context_simple->compose_buffer[0] = 0;
+             gtk_im_context_simple_commit_char (context, priv->tentative_match);
+             priv->compose_buffer[0] = 0;
 
            }
          else if (n_compose == 0)
            {
-             context_simple->modifiers_dropped = TRUE;
+             priv->modifiers_dropped = TRUE;
            }
          else
            {
              /* invalid hex sequence */
              beep_window (event->window);
              
-             context_simple->tentative_match = 0;
-             context_simple->in_hex_sequence = FALSE;
-             context_simple->compose_buffer[0] = 0;
+             priv->tentative_match = 0;
+             priv->in_hex_sequence = FALSE;
+             priv->compose_buffer[0] = 0;
              
              g_signal_emit_by_name (context_simple, "preedit-changed");
              g_signal_emit_by_name (context_simple, "preedit-end");
@@ -844,7 +871,7 @@ gtk_im_context_simple_filter_keypress (GtkIMContext *context,
     if (event->keyval == gtk_compose_ignore[i])
       return FALSE;
 
-  if (context_simple->in_hex_sequence && context_simple->modifiers_dropped)
+  if (priv->in_hex_sequence && priv->modifiers_dropped)
     have_hex_mods = TRUE;
   else
     have_hex_mods = (event->state & (HEX_MOD_MASK)) == HEX_MOD_MASK;
@@ -866,13 +893,13 @@ gtk_im_context_simple_filter_keypress (GtkIMContext *context,
    * ISO_Level3_Switch.
    */
   if (!have_hex_mods ||
-      (n_compose > 0 && !context_simple->in_hex_sequence) || 
-      (n_compose == 0 && !context_simple->in_hex_sequence && !is_hex_start) ||
-      (context_simple->in_hex_sequence && !hex_keyval && 
+      (n_compose > 0 && !priv->in_hex_sequence) ||
+      (n_compose == 0 && !priv->in_hex_sequence && !is_hex_start) ||
+      (priv->in_hex_sequence && !hex_keyval &&
        !is_hex_start && !is_hex_end && !is_escape && !is_backspace))
     {
       if (event->state & (GDK_MOD1_MASK | GDK_CONTROL_MASK) ||
-         (context_simple->in_hex_sequence && context_simple->modifiers_dropped &&
+         (priv->in_hex_sequence && priv->modifiers_dropped &&
           (event->keyval == GDK_Return || 
            event->keyval == GDK_ISO_Enter ||
            event->keyval == GDK_KP_Enter)))
@@ -882,35 +909,35 @@ gtk_im_context_simple_filter_keypress (GtkIMContext *context,
     }
   
   /* Handle backspace */
-  if (context_simple->in_hex_sequence && have_hex_mods && is_backspace)
+  if (priv->in_hex_sequence && have_hex_mods && is_backspace)
     {
       if (n_compose > 0)
        {
          n_compose--;
-         context_simple->compose_buffer[n_compose] = 0;
+         priv->compose_buffer[n_compose] = 0;
           check_hex (context_simple, n_compose);
        }
       else
        {
-         context_simple->in_hex_sequence = FALSE;
+         priv->in_hex_sequence = FALSE;
        }
 
       g_signal_emit_by_name (context_simple, "preedit-changed");
 
-      if (!context_simple->in_hex_sequence)
+      if (!priv->in_hex_sequence)
         g_signal_emit_by_name (context_simple, "preedit-end");
       
       return TRUE;
     }
 
   /* Check for hex sequence restart */
-  if (context_simple->in_hex_sequence && have_hex_mods && is_hex_start)
+  if (priv->in_hex_sequence && have_hex_mods && is_hex_start)
     {
-      if (context_simple->tentative_match &&
-         g_unichar_validate (context_simple->tentative_match))
+      if (priv->tentative_match &&
+         g_unichar_validate (priv->tentative_match))
        {
-         gtk_im_context_simple_commit_char (context, context_simple->tentative_match);
-         context_simple->compose_buffer[0] = 0;
+         gtk_im_context_simple_commit_char (context, priv->tentative_match);
+         priv->compose_buffer[0] = 0;
        }
       else 
        {
@@ -918,19 +945,19 @@ gtk_im_context_simple_filter_keypress (GtkIMContext *context,
          if (n_compose > 0)
            beep_window (event->window);
          
-         context_simple->tentative_match = 0;
-         context_simple->in_hex_sequence = FALSE;
-         context_simple->compose_buffer[0] = 0;
+         priv->tentative_match = 0;
+         priv->in_hex_sequence = FALSE;
+         priv->compose_buffer[0] = 0;
        }
     }
   
   /* Check for hex sequence start */
-  if (!context_simple->in_hex_sequence && have_hex_mods && is_hex_start)
+  if (!priv->in_hex_sequence && have_hex_mods && is_hex_start)
     {
-      context_simple->compose_buffer[0] = 0;
-      context_simple->in_hex_sequence = TRUE;
-      context_simple->modifiers_dropped = FALSE;
-      context_simple->tentative_match = 0;
+      priv->compose_buffer[0] = 0;
+      priv->in_hex_sequence = TRUE;
+      priv->modifiers_dropped = FALSE;
+      priv->tentative_match = 0;
 
       g_signal_emit_by_name (context_simple, "preedit-start");
       g_signal_emit_by_name (context_simple, "preedit-changed");
@@ -939,10 +966,10 @@ gtk_im_context_simple_filter_keypress (GtkIMContext *context,
     }
   
   /* Then, check for compose sequences */
-  if (context_simple->in_hex_sequence)
+  if (priv->in_hex_sequence)
     {
       if (hex_keyval)
-       context_simple->compose_buffer[n_compose++] = hex_keyval;
+       priv->compose_buffer[n_compose++] = hex_keyval;
       else if (is_escape)
        {
          gtk_im_context_simple_reset (context);
@@ -958,11 +985,11 @@ gtk_im_context_simple_filter_keypress (GtkIMContext *context,
        }
     }
   else
-    context_simple->compose_buffer[n_compose++] = event->keyval;
+    priv->compose_buffer[n_compose++] = event->keyval;
 
-  context_simple->compose_buffer[n_compose] = 0;
+  priv->compose_buffer[n_compose] = 0;
 
-  if (context_simple->in_hex_sequence)
+  if (priv->in_hex_sequence)
     {
       /* If the modifiers are still held down, consider the sequence again */
       if (have_hex_mods)
@@ -970,20 +997,20 @@ gtk_im_context_simple_filter_keypress (GtkIMContext *context,
           /* space or return ends the sequence, and we eat the key */
           if (n_compose > 0 && is_hex_end)
             {
-             if (context_simple->tentative_match &&
-                 g_unichar_validate (context_simple->tentative_match))
+             if (priv->tentative_match &&
+                 g_unichar_validate (priv->tentative_match))
                {
-                 gtk_im_context_simple_commit_char (context, context_simple->tentative_match);
-                 context_simple->compose_buffer[0] = 0;
+                 gtk_im_context_simple_commit_char (context, priv->tentative_match);
+                 priv->compose_buffer[0] = 0;
                }
              else
                {
                  /* invalid hex sequence */
                  beep_window (event->window);
 
-                 context_simple->tentative_match = 0;
-                 context_simple->in_hex_sequence = FALSE;
-                 context_simple->compose_buffer[0] = 0;
+                 priv->tentative_match = 0;
+                 priv->in_hex_sequence = FALSE;
+                 priv->compose_buffer[0] = 0;
                }
             }
           else if (!check_hex (context_simple, n_compose))
@@ -991,7 +1018,7 @@ gtk_im_context_simple_filter_keypress (GtkIMContext *context,
          
          g_signal_emit_by_name (context_simple, "preedit-changed");
 
-         if (!context_simple->in_hex_sequence)
+         if (!priv->in_hex_sequence)
            g_signal_emit_by_name (context_simple, "preedit-end");
 
          return TRUE;
@@ -999,7 +1026,7 @@ gtk_im_context_simple_filter_keypress (GtkIMContext *context,
     }
   else
     {
-      tmp_list = context_simple->tables;
+      tmp_list = priv->tables;
       while (tmp_list)
         {
           if (check_table (context_simple, tmp_list->data, n_compose))
@@ -1011,12 +1038,12 @@ gtk_im_context_simple_filter_keypress (GtkIMContext *context,
          g_print ("[ ");
          for (i = 0; i < n_compose; i++)
            {
-             const gchar *keyval_name = gdk_keyval_name (context_simple->compose_buffer[i]);
+             const gchar *keyval_name = gdk_keyval_name (priv->compose_buffer[i]);
              
              if (keyval_name != NULL)
                g_print ("%s ", keyval_name);
              else
-               g_print ("%04x ", context_simple->compose_buffer[i]);
+               g_print ("%04x ", priv->compose_buffer[i]);
            }
          g_print ("] ");
        });
@@ -1041,14 +1068,15 @@ static void
 gtk_im_context_simple_reset (GtkIMContext *context)
 {
   GtkIMContextSimple *context_simple = GTK_IM_CONTEXT_SIMPLE (context);
+  GtkIMContextSimplePriv *priv = context_simple->priv;
 
-  context_simple->compose_buffer[0] = 0;
+  priv->compose_buffer[0] = 0;
 
-  if (context_simple->tentative_match || context_simple->in_hex_sequence)
+  if (priv->tentative_match || priv->in_hex_sequence)
     {
-      context_simple->in_hex_sequence = FALSE;
-      context_simple->tentative_match = 0;
-      context_simple->tentative_match_len = 0;
+      priv->in_hex_sequence = FALSE;
+      priv->tentative_match = 0;
+      priv->tentative_match_len = 0;
       g_signal_emit_by_name (context_simple, "preedit-changed");
       g_signal_emit_by_name (context_simple, "preedit-end");
     }
@@ -1060,29 +1088,29 @@ gtk_im_context_simple_get_preedit_string (GtkIMContext   *context,
                                          PangoAttrList **attrs,
                                          gint           *cursor_pos)
 {
+  GtkIMContextSimple *context_simple = GTK_IM_CONTEXT_SIMPLE (context);
+  GtkIMContextSimplePriv *priv = context_simple->priv;
   char outbuf[37]; /* up to 6 hex digits */
   int len = 0;
-  
-  GtkIMContextSimple *context_simple = GTK_IM_CONTEXT_SIMPLE (context);
 
-  if (context_simple->in_hex_sequence)
+  if (priv->in_hex_sequence)
     {
       int hexchars = 0;
          
       outbuf[0] = 'u';
       len = 1;
 
-      while (context_simple->compose_buffer[hexchars] != 0)
+      while (priv->compose_buffer[hexchars] != 0)
        {
-         len += g_unichar_to_utf8 (gdk_keyval_to_unicode (context_simple->compose_buffer[hexchars]),
+         len += g_unichar_to_utf8 (gdk_keyval_to_unicode (priv->compose_buffer[hexchars]),
                                    outbuf + len);
          ++hexchars;
        }
 
       g_assert (len < 25);
     }
-  else if (context_simple->tentative_match)
-    len = g_unichar_to_utf8 (context_simple->tentative_match, outbuf);
+  else if (priv->tentative_match)
+    len = g_unichar_to_utf8 (priv->tentative_match, outbuf);
       
   outbuf[len] = '\0';      
 
@@ -1130,6 +1158,7 @@ gtk_im_context_simple_add_table (GtkIMContextSimple *context_simple,
                                 gint                max_seq_len,
                                 gint                n_seqs)
 {
+  GtkIMContextSimplePriv *priv = context_simple->priv;
   GtkComposeTable *table;
 
   g_return_if_fail (GTK_IS_IM_CONTEXT_SIMPLE (context_simple));
@@ -1141,5 +1170,5 @@ gtk_im_context_simple_add_table (GtkIMContextSimple *context_simple,
   table->max_seq_len = max_seq_len;
   table->n_seqs = n_seqs;
 
-  context_simple->tables = g_slist_prepend (context_simple->tables, table);
+  priv->tables = g_slist_prepend (priv->tables, table);
 }
index 8017c314f8af751a713b163f8b05045bebf79187..ee02e1b53f72a0ae6655d8f08540bf8a5498926f 100644 (file)
@@ -39,6 +39,7 @@ G_BEGIN_DECLS
 
 
 typedef struct _GtkIMContextSimple       GtkIMContextSimple;
+typedef struct _GtkIMContextSimplePriv   GtkIMContextSimplePriv;
 typedef struct _GtkIMContextSimpleClass  GtkIMContextSimpleClass;
 
 #define GTK_MAX_COMPOSE_LEN 7
@@ -47,14 +48,8 @@ struct _GtkIMContextSimple
 {
   GtkIMContext object;
 
-  GSList *GSEAL (tables);
-
-  guint GSEAL (compose_buffer[GTK_MAX_COMPOSE_LEN + 1]);
-  gunichar GSEAL (tentative_match);
-  gint GSEAL (tentative_match_len);
-
-  guint GSEAL (in_hex_sequence) : 1;
-  guint GSEAL (modifiers_dropped) : 1;
+  /* <private> */
+  GtkIMContextSimplePriv *priv;
 };
 
 struct _GtkIMContextSimpleClass